home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 41
/
Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso
/
-seriously_amiga-
/
programming
/
other
/
scm
/
slib
/
ratize.scm
< prev
next >
Wrap
Text File
|
1999-04-19
|
525b
|
14 lines
;;;; "ratize.scm" Convert number to rational number
(define (rational:simplest x y)
(define (sr x y) (let ((fx (floor x)) (fy (floor y)))
(cond ((not (< fx x)) fx)
((= fx fy) (+ fx (/ (sr (/ (- y fy)) (/ (- x fx))))))
(else (+ 1 fx)))))
(cond ((< y x) (rational:simplest y x))
((not (< x y)) (if (rational? x) x (slib:error)))
((positive? x) (sr x y))
((negative? y) (- (sr (- y) (- x))))
(else (if (and (exact? x) (exact? y)) 0 0.0))))
(define (rationalize x e) (rational:simplest (- x e) (+ x e)))